// 请求服务器地址
const baseURL = process.env.VUE_APP_BASE_URL
// 向外暴露一个方法 myRequest
function request(options) {
    //加载loading
    uni.showLoading({
        title: '加载中'
    })
    return new Promise((resolve, reject) => {
        const isToken = (options.header || {}).isToken === false
        if (!isToken) {
            options['header'] = {
                'Authorization': uni.getStorageSync('token')
            }
        }
        // get请求映射params参数
        // if (options.method === 'get' && options.params) {
        // 	let url = options.url + '?' + tansParams(options.params);
        // 	url = url.slice(0, -1);
        // 	options.params = {};
        // 	options.url = url;
        // }
        uni.request({
            // 开发者服务器接口地址（请求服务器地址 + 具体接口名）
            url: baseURL + options.url,
            // 请求方式（若不传，则默认为 GET ）
            method: options.method || 'GET',
            // 请求设置header信息
            // 将token存入request请求
            header: options.headers || {
                ...options.header,
                'Content-Type': 'application/json;charset=UTF-8;',
            },
            // 请求参数（若不传，则默认为 {} ）
            data: options.data || {},
            // 请求成功
            success: (res) => {
                let errCode = res.data.data.errCode || {}
                // 未设置状态码则默认成功状态
                const code = res.data.code || 200;
                if (errCode === 20011 || code === 20003) {
                    uni.showToast({
                        title: '登录状态已过期，请重新登录！'
                    })
                    uni.redirectTo({
                        url: '/pages/login/password',
                    })
                } else if (res.data.flag) {
                    resolve(res.data);
                } else {
                    reject(res.data)
                }
            },
            // 请求失败
            fail: (err) => {
                uni.showToast({
                    title: '请求接口失败！'
                })
                reject(err)
            },
            //请求结束之后，执行的回调函数（成功或失败都会执行）
            complete() {
                //隐藏loading
                uni.hideLoading()
            }
        })
    })
}

export default request;